<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <!-- import CSS -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/element-ui/2.15.9/theme-chalk/index.css">
</head>
<body>
<div id="app">
    <input type="text" placeholder="标题" v-model="image.title">
    <input type="button" value="发布" @click="send()">
    <!--action:请求地址
        name:设置提交参数的名称
        limit:设置上传图片的数量
        :on-success:设置上传完成时调用的方法
        :on-remove: 设置点击删除图标时调用的方法
        -->
    <el-upload
            action="/upload"
            name="picFile"
            limit="3"
            list-type="picture-card"
            :on-preview="handlePictureCardPreview"
            :on-success="handleSuccess"
            :on-remove="handleRemove">
        <i class="el-icon-plus"></i>
    </el-upload>
    <el-dialog :visible.sync="dialogVisible">
        <img width="100%" :src="dialogImageUrl" alt="">
    </el-dialog>
</div>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
<!-- import Vue before Element -->
<script src="https://cdn.staticfile.org/vue/2.6.14/vue.min.js"></script>
<!-- import JavaScript -->
<script src="https://cdn.staticfile.org/element-ui/2.15.9/index.min.js"></script>
<script>
    let v = new Vue({
        el: '#app',
        data: function() {
            return {
                dialogImageUrl: '',
                dialogVisible: false,
                image:{title:"",urls:""},
                fileList:[]
            }
        },
        methods:{
            send(){
                if (v.fileList.length==0){
                    alert("请选择上传的图片!");
                    return;
                }
                let arr = [];
                //从fileList里面取出每一张图片的路径 装进urls数组中
                for (let file of v.fileList) {
                    //取出文件对象中的图片路径(图片名)
                    arr.push(file.response);
                }
                //['a.jpg','b.jpg','c.jpg']     "a.jpg,b.jpg,c.jpg"
                v.image.urls = arr.toString();
                axios.post("/insert",v.image).then(function () {
                    alert("发布完成!");
                    location.href="/";
                })
            },
            handleRemove(file, fileList) {
                v.fileList = fileList;
                console.log(file, fileList);
                //发出删除文件的请求
                axios.get("/remove?fileName="+file.response).then(function () {
                    console.log("服务器文件删除完成!");
                })
            },
            handlePictureCardPreview(file) {
                this.dialogImageUrl = file.url;
                this.dialogVisible = true;
            },
            handleSuccess(response,file,fileList){
                v.fileList = fileList;
                //response 服务器响应的内容
                //file代表上传成功的文件对象,文件对象中也会保存一份服务器响应的数据
                //fileList 是一个数组里面装着多个文件对象
                // alert(response);
                // alert(file.response);
            }
        }
    })
</script>
</html>


<!-- element.eleme.cn-->